`ifndef SANITY_CASE_SV
`define SANITY_CASE_SV

class sanity_case_ar_seq extends ar_sequence;

	function new(string name = "sanity_case_ar_seq");
        super.new(name);
    endfunction
	virtual task body();
        repeat(8) begin
		`uvm_do_with(ar_tr, {ar_tr.size == 32; ar_tr.addr == 0;})
	    end
    endtask

	`uvm_object_utils(sanity_case_ar_seq)
endclass: sanity_case_ar_seq

class sanity_case_w_seq extends w_sequence;

	function new(string name = "sanity_case_w_seq");
        super.new(name);
    endfunction
	virtual task body();
        repeat(20) begin
		`uvm_do_with(w_tr, {w_tr.addr == 0;})
	    end
    endtask

	`uvm_object_utils(sanity_case_w_seq)
endclass: sanity_case_w_seq


class sanity_case extends base_test;

	extern function new(string name = "sanity_case", uvm_component parent=null);
	extern virtual function void build_phase(uvm_phase phase);
	
	`uvm_component_utils(sanity_case)
endclass: sanity_case

function sanity_case::new(string name = "sanity_case", uvm_component parent=null);
    super.new(name, parent);
endfunction: new

function void sanity_case::build_phase(uvm_phase phase);
	super.build_phase(phase);
	uvm_config_db #(uvm_object_wrapper)::set(
		this,
		"env.a_agt.sqr.main_phase",
		"default_sequence",
		sanity_case_ar_seq::type_id::get()
	);    
    uvm_config_db #(uvm_object_wrapper)::set(
		this,
		"env.w_agt.sqr.main_phase",
		"default_sequence",
		sanity_case_w_seq::type_id::get()
	);
endfunction: build_phase

`endif
